Mientras depuraba la cadena de prototipos de JavaScript, me encontré con que cuando definimos una función Constructor, la cadena constructor-->prototipo nunca termina, sigue expandiéndose. He adjuntado una captura de pantalla y un código de muestra también como referencia. 
function Person(first, last, age, gender, interests) { this.name = { 'first': first, 'last' : last }; this.age = age; this.gender = gender; } const person1 = new Person("foo", "bar", 24, "Male")Mi pregunta es, ¿JavaScript accede a él por referencia/caminando hacia arriba en la cadena o JavaScript realmente lo está almacenando en la memoria?
La cadena no se expande constantemente, contiene una referencia circular.
Como se explica en MDN :
Cada función constructora tiene una propiedad
prototypecuyo valor es un objeto que contiene una propiedadconstructor. Esta propiedadconstructorapunta a la función constructora original.
El siguiente ejemplo demuestra esto:
function X() {} const x = new X(); // test for strict equality console.log(x.constructor === x.constructor.prototype.constructor); // true